<?php

namespace Crm\MService;

/**
 * 号码归属地数据库模型
 *
 * @author SoChishun <14507247@qq.com>
 * @version 1.0
 * @since 1.0.0 <2015-3-30> SoChishun Added.
 */
class PhoneNumberAttributionModel extends \Crm\Model\AppbaseModel {

    /**
     * 数据表名称
     * @var string
     */
    protected $tableName = 'tphone_number_attribution';

    /**
     * 字段定义
     * @var array
     */
    protected $fields = array();

    /**
     * 命名范围
     * @var array
     */
    protected $_scope = array();

    /**
     * 是否批量验证
     * @var boolean
     */
    protected $patchValidate = true;

    /**
     * 验证规则
     * @var array
     */
    protected $_validate = array();

    /**
     * 自动填充
     * @var array
     */
    protected $_auto = array();

    /**
     * 获取号码的归属地
     * @param string $phone_no
     * @since 1.0 <2015-3-30> SoChishun Added.
     */
    public function get_attribute($phone_no) {
        $phone_no = trim($phone_no);
        if (!$phone_no) {
            return $this->base_return_array(false, '号码为空');
        }
        $len = strlen($phone_no);
        if ($len < 7) { // 不是固话也不是手机
            return $this->base_return_array(false, '号码格式有误');
        }
        if ($len > 10) { // 手机号过滤前缀0
            $phone_no = ltrim($phone_no, '0');
            if (!$phone_no) {
                return $this->base_return_array(false, '不是有效的手机号码');
            }
            $len = strlen($phone_no);
            if ($len < 11) {
                return $this->base_return_array(false, '手机号码格式有误');
            }
        }
        /**
          -- 3位--39个 010,020,029,886...913
          -- 4位--321个 0310,0352...0999
          -- 5位--178个 04831,04887...09854
          -- 7位--20w个 1300000...1899999
         */
        $where = '';
        if ($phone_no[0] == 1) {
            $where = array('number_part' => substr($phone_no, 0, 7)); // 7位
        }
        if (!$where && (($phone_no[0] < 1 && $phone_no[1] < 3) || $phone_no[0] > 7)) {
            $where = array('number_part' => substr($phone_no, 0, 3)); // 3位
        }
        if (!$where) {
            $where = array('number_part' => array('like', substr($phone_no, 0, 4) . '%')); // 4-5位
        }
        if ($where) {
            $result = $this->where($where)->getField('area_name');
            return $this->base_return_array($result);
        }
        return $this->base_return_array(false, '参数无效');
    }

}
